package com.zzp.completablefuturedemo;

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;

public class CompletableFutureTest2 {

//    thenApply当一个线程依赖另一个线程时，获取上一个任务返回的结果，并返回当前任务的返回值。
//    thenAccept消费处理结果。接收任务的处理结果，并消费处理，无返回结果。
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {
            //  int i = 1 / 0;
            return 1024;
        }).thenApply(f -> {
            return 2 * f;
        }).whenComplete((t, s) -> {
            System.out.println("t:\t" + t);
            System.out.println("s:\t" + s);
        }).exceptionally(e -> {
            System.out.println("e:\t" + e);
            return 404;
        });
        System.out.println(future.get());
    }
}